//============================================================================================
/**
 * @file	board.h
 * @brief	看板処理
 * @author	Hiroyuki Nakamura
 * @date	2005.10.25
 */
//============================================================================================
#ifndef BOARD_H
#define BOARD_H
#undef GLOBAL
#ifdef BOARD_H_GLOBAL
#define GLOBAL	/*	*/
#else
#define GLOBAL	extern
#endif


//============================================================================================
//	定数定義
//============================================================================================
#define	BOARD_REQ_WAIT	( 0 )	///< 看板リクエスト：待機
#define	BOARD_REQ_ADD	( 1 )	///< 看板リクエスト：看板ウィンドウ作成
#define	BOARD_REQ_DOWN	( 2 )	///< 看板リクエスト：看板ウィンドウを下げる
#define	BOARD_REQ_UP	( 3 )	///< 看板リクエスト：看板ウィンドウを上げる
#define	BOARD_REQ_DEL	( 4 )	///< 看板リクエスト：看板ウィンドウ破棄


#ifndef	__ASM_NO_DEF_	// ↓これ以降は、アセンブラでは無視

typedef	struct _BOARD_WORK BOARD_WORK;


//============================================================================================
//	プロトタイプ宣言
//============================================================================================

//--------------------------------------------------------------------------------------------
/**
 * 看板ワーク確保
 *
 * @param	heap	ヒープID
 *
 * @return	確保したワーク
 */
//--------------------------------------------------------------------------------------------
GLOBAL void * BoardWorkAlloc( u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 看板ワーク解放
 *
 * @param	wk		ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BoardWorkDelete( BOARD_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 看板データセット
 *
 * @param	wk		ワーク
 * @param	type	看板タイプ
 * @param	map		マップID（グラフィックID）
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BoardDataSet( BOARD_WORK * wk, u16 type, u16 map );

//--------------------------------------------------------------------------------------------
/**
 * 看板リクエスト発行
 *
 * @param	wk		ワーク
 * @param	req		リクエスト
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BoardSetRequest( BOARD_WORK * wk, u8 req );

//--------------------------------------------------------------------------------------------
/**
 * データ取得：BMPウィンドウデータ
 *
 * @param	wk		ワーク
 *
 * @return	BMPウィンドウデータ
 */
//--------------------------------------------------------------------------------------------
GLOBAL GF_BGL_BMPWIN * BoardWinGet( BOARD_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * データ取得：看板タイプ
 *
 * @param	wk		ワーク
 *
 * @return	看板タイプ
 */
//--------------------------------------------------------------------------------------------
GLOBAL u8 BoardTypeGet( BOARD_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 看板処理終了チェック
 *
 * @param	wk		ワーク
 *
 * @retval	"TRUE = 終了"
 * @retval	"FALSE = 動作中"
 */
//--------------------------------------------------------------------------------------------
GLOBAL BOOL BoardReqEndCheck( BOARD_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 看板メイン処理
 *
 * @param	repw	フィールドワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BoardMain( FIELDSYS_WORK * repw );

//--------------------------------------------------------------------------------------------
/**
 * リクエストを即実行
 *
 * @param	repw	フィールドワーク
 * @param	req		リクエスト
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BoardSetDirect( FIELDSYS_WORK * repw, u8 req );


#endif	__ASM_NO_DEF_

#undef GLOBAL
#endif	/* BOARD_H */